#include <bits/stdc++.h>
using namespace std;
// 将二进制字符串转换为十进制整数
int chang1(string s) {
  int ans = 0;
  for (int i = 0; i < s.size(); i++) {
    ans = ans * 2 + (s[i] - '0');
  }
  return ans;
}
// 将十进制数k转为二进制字符串
string chang2(int k) {
    //把 整数k除以2、求余数、再反序
  string ans;
  while (k != 0) {
    int yu = k % 2;
    ans = char('0' + yu) + ans;
    k = k / 2;
  }
  return ans;
}
// 辗转相除法求整数a、整数b的最大公约数
int gcd(int a, int b) {
  while (b != 0) {
    int yu = a % b;
    a = b;
    b = yu;
  }
  return a;
}
int main() {
  string s1, s2;
  cin >> s1 >> s2;
  int k1 = chang1(s1); // 将二进制字符串转化为十进制整数
  int k2 = chang1(s2);

  // 求k1、k2的最大公约数
  int x = gcd(k1, k2);
  // 就是求k1、k2的最小公倍数
  int y = (k1 * k2) / x;

  // 将10进制整数转化为二进制字符串
  cout << chang2(x) << " " << chang2(y);
  return 0;
}

// 这一节课听得很认真 